CGI和FastCGI

概念

CGI全称是common gateway interface, 说明它是一个网关接口, 是一种协议, 没有具体实现. 和java的JDBC是一个意思.

FastCGI全称是fast common gateway interface, 它也是一个网关接口, 只是在CGI接口上做了一层封装.

但是CGI协议并没有考虑到性能问题, 实现了CGI协议的程序在执行完任务后就会销毁进程, 当有新的任务时, 又要重新启动进程.

FastCGI协议考虑到了性能问题, 实现了FastCGI协议的程序, 会先启动一个master进程作为管理员, 然后启动多个worker进程(相当于CGI)作为任务执行者. 并且这些worker进程的管理类似于线程池.

伪代码

interface CGI{
  createWorkderThenParsePhpFile();
}


interface FastCGI{
  createMasterToManageWorkers();
  createWorkderThenParsePhpFile();
}

通过上面的伪代码可以发现, FastCGI只是在CGI接口上面做了一层封装(编程就是套娃的过程), 写了一个管理方法createMasterToManageWorkers.

php-cgi和php-fpm

php-cgiphp-fpm是对CGIFastCGI的实现, 它们两个都是应用程序.

在最开始只有php-cgi, 并且实现了CGIFastCGI两种协议, 但是那个写代码的人水平不够高, 所以内部执行效率低下.

后来出现一个高手写了php-fpm应用程序, 用来实现两种协议, 这个应用程序效率很高, 被php官方盯上了, 把php-fpm收入自己腰包.(最开始php-fpm是外部插件, 现在已经内部集成).

总结

CGIFastCGI都是协议, 是一种规范. php-cgiphp-fpm都是实现了规范的程序, 其中php-fpm代码质量高, 执行效率好.

参考资料

PHP中CGI、CLI、FPM是什么 搞不清FastCgi与PHP-fpm之间是个什么样的关系 php-cli和php-fpm的关系是什么? php-cgi是php脚本的解析器吗?

THE END
推荐文章
  • 设计模式的简单工厂和工厂方法

  • 黄帝内经-脉要精微论-望闻问切四诊法(3)

  • 黄帝内经-第27篇-离合真邪篇(1)

  • 抖音快手B站等平台视频检测机制和规避方法

  • Onedrive登录错误0x80190001的解决办法

  • microsoft store 开启v2ray代理后不能联网

  • 如何有效的减肥

  • JS数据结构-单项链表

评论 共0条
开启精彩搜索

热门搜索

暂无

历史搜索

用户名/邮箱/手机号
密码
用户名
密码
重复密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
注册
找回密码
邮箱/手机号
验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

0字

0字

2024年10月

0字

新增

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

0字

新增

0字

0字

0字

0字

新增

0字

0字